﻿using System;
namespace Tridion.Gateway
{
    public interface IContextManager
    {
        object CreateEmptyCollection(Tridion.ContentManager.Interop.TDSDefines.ItemType itemType);
        Tridion.ContentManager.Interop.TDS.ListRowFilter CreateListRowFilter();
        void FlushCache(object ObjectOrURI);
        Tridion.ContentManager.Interop.TDS.Component GetComponent(string ComponentID, object Publication, bool EditMode, int Version);
        Tridion.ContentManager.Interop.TDS.ComponentTemplate GetComponentTemplate(string ComponentTemplateID, object Publication, bool EditMode, int Version);
        Tridion.ContentManager.Interop.TDS.Schemas GetDestinationProtocols();
        string GetEnumerationValues(string enumerations);
        Tridion.ContentManager.Interop.TDS.Folder GetFolder(string folderID, object Publication);
        Tridion.ContentManager.Interop.TDS.Groups GetGroups();
        string GetListApprovalStatuses(Tridion.ContentManager.Interop.TDSDefines.ListColumnFilter columnFilter);
        string GetListDestinationProtocols(Tridion.ContentManager.Interop.TDSDefines.ListColumnFilter columnFilter);
        string GetListDirectoryServices(Tridion.ContentManager.Interop.TDS.ListRowFilter rowFilter);
        string GetListDirectoryServiceTestUsers(string directoryService, string searchDN, Tridion.ContentManager.Interop.TDSDefines.EnumDirectorySearchTypes searchType);
        string GetListItems(Tridion.ContentManager.Interop.TDSDefines.ListColumnFilter columnFilter, Tridion.ContentManager.Interop.TDS.ListRowFilter rowFilter);
        string GetListMultimediaTypes(Tridion.ContentManager.Interop.TDSDefines.ListColumnFilter columnFilter);
        string GetListNonSystemUsers(Tridion.ContentManager.Interop.TDSDefines.EnumNonSystemUserType userType, string nameOfDomainOrDirectory);
        string GetListPublications(Tridion.ContentManager.Interop.TDSDefines.ListColumnFilter columnFilter);
        string GetListPublicationTargets(Tridion.ContentManager.Interop.TDSDefines.ListColumnFilter columnFilter);
        string GetListTargetTypes(Tridion.ContentManager.Interop.TDSDefines.ListColumnFilter columnFilter);
        string GetListTemplateTypes(Tridion.ContentManager.Interop.TDSDefines.ListColumnFilter columnFilter, Tridion.ContentManager.Interop.TDS.ListRowFilter rowFilter);
        string GetListTrustees(Tridion.ContentManager.Interop.TDSDefines.TrusteeType trusteeTypes, Tridion.ContentManager.Interop.TDSDefines.ListColumnFilter columnFilter, Tridion.ContentManager.Interop.TDS.ListRowFilter rowFilter);
        string GetListVirtualFolderTypes(Tridion.ContentManager.Interop.TDSDefines.ListColumnFilter columnFilter);
        string GetLocalizedErrorXML(string errorXML, int LangID);
        Tridion.ContentManager.Interop.TDS.Logging GetLogging();
        Tridion.ContentManager.Interop.TDS.ManagementInfo GetManagementInfo();
        Tridion.ContentManager.Interop.TDS.MultimediaTypes GetMultimediaTypes();
        object GetNewObject(Tridion.ContentManager.Interop.TDSDefines.ItemType itemType, object inOrgItem, object contextPublication);
        object GetObject(string URI, Tridion.ContentManager.Interop.TDSDefines.EnumOpenMode mode, object contextPublication, Tridion.ContentManager.Interop.TDSDefines.XMLReadFilter filter);
        Tridion.ContentManager.Interop.TDS.Page GetPage(string pageID, object Publication, bool EditMode, int Version);
        Tridion.ContentManager.Interop.TDS.PageTemplate GetPageTemplate(string pageTemplateID, object Publication, bool EditMode, int Version);
        Tridion.ContentManager.Interop.TDS.Publication GetPublication(string publicationID);
        Tridion.ContentManager.Interop.TDS.Publications GetPublications();
        Tridion.ContentManager.Interop.TDS.PublicationTarget GetPublicationTarget(string pubTargetID);
        Tridion.ContentManager.Interop.TDS.PublicationTargets GetPublicationTargets();
        Tridion.ContentManager.Interop.TDS.PublishTransaction GetPublishTransaction(string publishTransactionID);
        Tridion.ContentManager.Interop.TDS.Search GetSearch();
        Tridion.ContentManager.Interop.TDS.StructureGroup GetStructureGroup(string structureGroupID, object Publication);
        string GetSystemXSD(string nameOrNamespaceURI);
        Tridion.ContentManager.Interop.TDS.TargetType GetTargetType(string targetTypeID);
        Tridion.ContentManager.Interop.TDS.TargetTypes GetTargetTypes();
        Tridion.ContentManager.Interop.TDS.Users GetUsers();
        Tridion.ContentManager.Interop.TDS.Schemas GetVirtualFolderTypes();
        Tridion.ContentManager.Interop.TDS.WFE GetWFE();
        string GetXML(string Uri, Tridion.ContentManager.Interop.TDSDefines.XMLReadFilter Filter);
        void Impersonate(string Identity);
        void Initialize();
        void SetListApprovalStatuses(string newListApprovalStatuses);
        Tridion.ContentManager.Interop.TDS.User User { get; }
        string Version { get; }
    }
}
